#ifndef AGENDA_H
#define AGENDA_H

#include <QMainWindow>
#include "conectar/conectar.h"

/****************************************************
 * INCLUDES PARA TODO LO RELACIONADO CON LA CONEXION*
 * CON LA BASE DE DATOS SQLITE                      *
 ****************************************************/
#include "conexion/conexion.h"

/****************************************************
 * INCLUDES PARA TODO LO RELACIONADO CON MIS DATOS  *
 * DE LA BASE DE DATOS QUE SE ESTA USANDO           *
 ****************************************************/
#include "misdatos/misdatos.h"
#include "vermisdatos/vermisdatos.h"

/****************************************************
 * INCLUDES PARA TODO LO RELACIONADO CON EL CLIENTE *
 ****************************************************/
#include "agrcntclt/agrclt.h"
#include "brrcntclt/borrarcliente.h"
#include "bsccntclt/buscarcliente.h"

/******************************************************
 * INCLUDES PARA TODO LO RELACIONADO CON EL PROVEEDOR *
 ******************************************************/
#include "agrcntprvd/agrcprv.h"

/******************************************************
 * INCLUDES PARA TODO LO RELACIONADO CON LA VENTANA DE *
 * CANCELAR LA OPERACIONA CTUAL *
 ******************************************************/
#include "cancelar/cancelar.h"

namespace Ui {
class Agenda;
}

class Agenda : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit Agenda(QWidget *parent = 0);
    ~Agenda();
    
private:
    Ui::Agenda *ui;
    //CARGA LA TOOL BAR
    void addToolBarButtons( void );
    //PUNTERO LA CLASE DE CONEXION CON LA BASE DE DATOS
    conexionDB* cnnDB;
    //PUNTERO A LA ESTRUCTURA UNIVERSAL DE LOS DATOS
    Datos* dtsAll;

    //PUNTERO AL WIDGET QUE SE ENCARGA DE INSERTAR LOS DATOS
    misdatos* addMisDatos;
    //PUNTERO AL WIDGET QUE SE ENCARGA DE MOSTRAR MIS DATOS
    vermisdatos* showMisDatos;

    //PUNTERO PARA EL WIDGET DE AGREGAR CLIENTE
    agrclt* aggrclt;
    //PUNTERO PARA EL WIDGET DE BUSCAR CLIENTE
    buscarcliente* bscclnt;
    //PUNTERO PARA EL WIDGET DE BORRAR CLIENTE
    borrarcliente* brrclnt;

    //PUNTERO AL WIDGET DE AGREGAR CONTACTOS PROVEEDORES
    agrcprv* aggrcprv;


    //PUNTERO A LA CLASE QUE SE ENCARGA DE MOSTRAR EL MENSAJE
    //DE CANCELAR DATOS
    cnlApp* clApp;


    //FUNCION QUE SE ENCARGA DE ACTIVAR CIERTOS BOTONES
    //SOLO SI SE HA REALIZADO CORRECTAMENTE LA CONEXION
    //CON LA BASE DE DATOS SELECCIONADA
    void activeButtonsApp( void );
    //FUNCION QUE SE ENCARGA DE DESACTIVAR CIERTOS BOTONES
    //SOLO SI SE HA REALIZADO CORRECTAMENTE LA CONEXION
    //CON LA BASE DE DATOS SELECCIONADA
    void desactiveButtonsApp( void );

private slots:

    //SLOT PARA EL WIDGET QUE SE ENCARGA DE CONECTAR CON LA BASE DE DATOS
    void showWCDatabase( void );
    //SLOT PARA TERMINAR LA CONEXION CON LA BASE DE DATOS
    void closeCDataBase( void );

    //SLOT PARA MOSTRAR EL WIDGET DE AGREGAR MIS DATOS
    void showAMDatos( void );
    //SLOT PARA MOSTRAR EL WIDGET DE VER MIS DATOS
    void showSMDatos( void );
    //SLOT PARA BORRAR MIS DATOS
    void showCMDatos( void );
    //SLOT PARA CAMBIAR LOS BOTONES
    void swapButtonsAB( void );


    //SLOT PARA EL WIDGET DE AGREGAR CLIENTE
    void showAddClnt( void );
    //SLOT PARA EL WIDGET DE BUSCAR CLIENTE
    void shwClint( void );
    //SLOT PARA EL WIDGET DE BORRAR CLIENTE
    void clrClint( void );

    //SLOT QUE MUESTRA EL DIALOGO DE AGREGAR PROVEEDOR
    void showAddProv( void );

    //SLOT PARA SELECCIONAR BASE DE DATOS
    void selectionDBPC( void );

    void closeAplication( void );

    //FUNCION PARA MOSTRAR LOS DATOS DE ACERCA DE...
    void showAcercaDe( void );
};

#endif // AGENDA_H
